package 线程.等待唤醒机制;

public class Cook extends Thread{
    @Override
    public void run() {
        while (true){
            synchronized (Desk.lock){
                //1.判断已经做了多少的食物了
                //如果已经做了10碗，就跳出循环
                if (Desk.count==0){
                    System.out.println("生产者饭做完了,不做了");
                    break;
                }else {
                    //2.判断现在桌子上是否有食物
                    //如果没有食物
                    if (Desk.foodFlag==0){
                        //生产食物-->修改食物存在的状态
                        Desk.foodFlag=1;
                        System.out.println("生产者饭做好了,让消费者来吃饭");
                        //唤醒消费者,来吃食物
                        Desk.lock.notifyAll();
                    }else {
                        //如果有食物-->等待消费者吃食物
                        try {
                            System.out.println("桌子上已经有饭了,等待消费者吃饭");
                            Desk.lock.wait();
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }
        }
    }
}
